package com.gmall.service.exception;

import com.gmall.common.exception.GmallGlobalException;
import com.gmall.common.result.Result;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
@Component
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public Result<String> handleException(Exception e){
        //记录日志
        //发送消息给运维
        //发送邮件给开发人员,ex对象发送给开发人员
        e.printStackTrace();
        return Result.fail("Exception:" + e.getMessage());
    }

    @ExceptionHandler(RuntimeException.class)
    public Result<String> handleRuntimeException(RuntimeException e){
        //记录日志
        //发送消息给运维
        //发送邮件给开发人员,ex对象发送给开发人员
        e.printStackTrace();
        return Result.fail("RuntimeException:" + e.getMessage());
    }

    @ExceptionHandler(ArithmeticException.class)
    public Result<String> handleArithmeticException(ArithmeticException e){
        //记录日志
        //发送消息给运维
        //发送邮件给开发人员,ex对象发送给开发人员
        e.printStackTrace();
        return Result.fail("ArithmeticException:" + e.getMessage());
    }

    @ExceptionHandler(GmallGlobalException.class)
    public Result<String> handleGlobalExceptionn(GmallGlobalException e){
        //记录日志
        //发送消息给运维
        //发送邮件给开发人员,ex对象发送给开发人员
        e.printStackTrace();
        return Result.fail("GmallGlobalException:" + e.getMessage());
    }
}
